package com.fgxia.admin.service;

import com.ruoyi.business.domain.bo.admin.*;
import com.ruoyi.business.domain.vo.admin.*;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;

public interface IAdminWaybillService {

    /**
     * 查询运单详情(编辑用)
     *
     * @param orderId
     * @return
     */
    AdminWaybillAddVo selectWaybillById(Long orderId);

    /**
     * 查询运单详情(详情用)
     *
     * @param waybillId
     * @return
     */
    AdminWaybillQueryVo queryWaybillById(Long waybillId);

    /**
     * 新增运单
     *
     * @param waybill
     * @return
     */
    Boolean insertWaybill(AdminWaybillAddBo waybill);

    /**
     * 更新运单
     *
     * @param waybill
     * @return
     */
    Boolean updateWaybill(AdminWaybillAddBo waybill);

    /**
     * 定位打卡
     *
     * @param location
     * @return
     */
    Boolean insertLocation(AdminLocationAddBo location);

    /**
     * 更新运单价格
     *
     * @param price
     * @return
     */
    Boolean updateWaybillPrice(AdminPriceEditBo price);

    /**
     * 紧急运单
     *
     * @param urgent
     * @return
     */
    Boolean urgentWaybill(AdminUrgentBo urgent);

    /**
     * 取消紧急运单
     *
     * @param urgent
     * @return
     */
    Boolean cancelUrgentWaybill(AdminUrgentBo urgent);

    /**
     * 上传运单回单
     *
     * @param receipt
     * @return
     */
    Boolean insertReceipt(AdminUploadBillBo receipt);


    /**
     * 上传运单打款凭证
     *
     * @param payment
     * @return
     */
    Boolean insertPayment(AdminUploadBillBo payment);

    /**
     * 获取运单列表
     *
     * @param freightQueryBo 运单列表查询bo
     * @param pageQuery      分页查询
     * @return
     */
    TableDataInfo<AdminFreightInfoVo> listWaybill(AdminFreightQueryBo freightQueryBo, PageQuery pageQuery);

    /**
     * 获取运单改价历史记录
     *
     * @param waybillId 运单id
     * @return
     */
    AdminWaybillRevaluationVo listWaybillPrice(Long waybillId);

    /**
     * 获取运单定位历史记录
     *
     * @param waybillId 运单id
     * @return
     */
    AdminWaybillVehicleTrailVo listWaybillVehicleTrail(Long waybillId);
}
